package de.bml.versandanzeige;

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class GegenstandAnzeigenActivity extends Activity {
	private Gegenstand gewaehlterGegenstand;

	private static final int STANDORT_AUSWAEHLEN_REQUEST = 1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.gegenstand_ansicht);

		Bundle extras = getIntent().getExtras();
		if (extras != null) {
			gewaehlterGegenstand = Gegenstand.get(extras
					.getLong(HauptActivity.GEGENSTAND_EXTRA));
		}

	}

	@Override
	protected void onResume() {
		super.onResume();

		if (gewaehlterGegenstand != null) {
			((TextView) findViewById(R.id.textView_GegenstandLabel))
					.setText(gewaehlterGegenstand.getLabel());
			((TextView) findViewById(R.id.textView_GegenstandDetails))
					.setText(gewaehlterGegenstand.getDetails());
			((TextView) findViewById(R.id.textView_GegenstandTyp))
					.setText(gewaehlterGegenstand.getType().getLabel());
			String id_extern = gewaehlterGegenstand.getIdExtern();
			if (!id_extern.equals("")) {
				((TextView) findViewById(R.id.textView_GegenstandIdExtern))
						.setText(getResources().getString(
								R.string.zugeordnete_id)
								+ " " + id_extern);
				((Button) findViewById(R.id.buttonIdZuordnen))
						.setText(R.string.button_neueIdZuordnen);
			}
			Standort standortGegenstand = gewaehlterGegenstand.getStandort();
			if (standortGegenstand != null) {
				((TextView) findViewById(R.id.textView_GegenstandStandort))
						.setText(getResources().getString(
								R.string.zugeordneter_standort)
								+ " " + standortGegenstand.getLabel());
			}
			final Standort aktuellerStandort = Standort.getAktuell();
			if (aktuellerStandort != null) {
				Button button_standortSetzen = ((Button) findViewById(R.id.buttonStandortZuordnen));
				button_standortSetzen
						.setText(R.string.button_aktuellenStandortZuordnen);
				button_standortSetzen.setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						for (Gegenstand gegenstand : Gegenstand.getAll()) {
							if (gewaehlterGegenstand.equals(gegenstand)) {
								gewaehlterGegenstand
										.setStandort(aktuellerStandort);
								onResume();
							}
						}
					}
				});
			}
		}
	}

	public void standortZuordnen(View view) {
		Intent auswaehlenIntent = new Intent(this,
				StandortAuswaehlenActivity.class);
		startActivityForResult(auswaehlenIntent, STANDORT_AUSWAEHLEN_REQUEST);
	}

	public void idZuordnen(View view) {
		IntentIntegrator integrator = new IntentIntegrator(this);
		integrator.initiateScan();
		// TODO testen
	}

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent intent) {
		if (resultCode == Activity.RESULT_OK) {
			// If the request went well (OK) and the request was
			switch (requestCode) {
			case STANDORT_AUSWAEHLEN_REQUEST:
				Standort gewaehlterStandort = Standort.get(intent.getLongExtra(
						HauptActivity.STANDORT_EXTRA, 0));
				gewaehlterGegenstand.setStandort(gewaehlterStandort);
				Toast toast = Toast.makeText(getApplicationContext(),
						gewaehlterGegenstand + " steht jetzt hier: "
								+ gewaehlterStandort, Toast.LENGTH_LONG);
				toast.show();
				break;
			case IntentIntegrator.REQUEST_CODE:
				IntentResult result = IntentIntegrator.parseActivityResult(
						requestCode, resultCode, intent);
				if (result != null) {
					String id = result.getContents();
					gewaehlterGegenstand.setIdExtern(id);
					break;
				}
			}
		}
	}
}
